// utils/jwt.js
const jwt = require('jsonwebtoken');
const { 
  JWT_SECRET, 
  ACCESS_TOKEN_EXPIRES_IN, 
  REFRESH_TOKEN_EXPIRES_IN 
} = require('../config/config');

module.exports = {
  // 生成Access Token
  generateAccessToken(userId) {
    return jwt.sign(
      { userId, type: 'access' },
      JWT_SECRET,
      { expiresIn: ACCESS_TOKEN_EXPIRES_IN } // 例如 '15m'
    );
  },

  // 生成Refresh Token
  generateRefreshToken(userId) {
    console.log('[生成RefreshToken] 使用的JWT_SECRET:', JWT_SECRET); // 添加这行
    return jwt.sign(
      { userId, type: 'refresh' },
      JWT_SECRET,
      { expiresIn: REFRESH_TOKEN_EXPIRES_IN } // 例如 '7d'
    );
  },

  // 验证Token
  verifyToken(token) {   
    console.log('verifyToken', token);
    console.log('[验证Token] 使用的JWT_SECRET:', JWT_SECRET); // 添加这行
    try {
      const decoded = jwt.verify(token, JWT_SECRET);
      console.log('decoded', decoded);
      return decoded;
    } catch (error) {
      console.error(error);
      // 更详细的错误处理
      if (error.name === 'TokenExpiredError') {
        throw new Error('Token已过期');
      }
      if (error.name === 'JsonWebTokenError') {
        throw new Error('无效的Token');
      }
      throw new Error('Token验证失败');
    }
  }
};